package com.cskaoyan.javase.network._0introduction;

import java.net.InetAddress;
import java.net.UnknownHostException;

/**
 * 获取本机的IP地址
 * IP地址: 唯一确定网络中的一台主机
 * 端口号: 唯一确定一个主机中的进程
 * 接受者监听 端口号 监听发送者是否发送数据 发送者就需要将数据发送到接受者监听的端口号
 *
 * 要想实现通信,还需要第三个要素,通信的规则,如何进行通信
 * "通信协议"
 * TCP和UDP是常见的通信协议
 *
 * UDP协议，该协议进行数据传输是一种面向无连接的、不可靠的，但效率更高,也更灵活的的传输方式.
 *      它的最大特点是，要求传输的过程中将数据封装成数据包然后进行传输。
 *
 * TCP协议，该协议进行数据传输是一种面向连接的、稳定可靠的，但效率稍低,灵活性稍低的传输方式。
 * 它的最大特点是，需要先建立连接再进行传输，并且传输的过程通过IO流的形式出现（所以TCP网络编程需要使用Java IO）。
 *
 * Java具体来实现网络编程,需要依赖于套接字(Socket),它对网络编程的实现做了封装,使用Java程序员更加容易的实现网络编程
 * ip+port+协议 socket = ip+port 不同的Socket在底层封装了不同的协议
 * 只需要创建不同的Socket对象,就能够实现不同协议的网络编程
 *
 * @since 09:50
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) throws UnknownHostException {
        // 打印本地主机名 + ip地址
        System.out.println(InetAddress.getLocalHost());
        // 打印本地主机名
        System.out.println(InetAddress.getLocalHost().getHostName());
        // 打印本地主机ip地址
        System.out.println(InetAddress.getLocalHost().getHostAddress());
    }
}
